//单例模式
//饿汉模式
//唯一实例创建时机非常早,类似于一个饿了很久的人,看到吃的就会抓紧时间吃
class Singleton{
    //instance 只有唯一一个,初始化是只执行一次的
    private static Singleton instance = new Singleton();
    //static(修饰的其实是 类属性) 成员初始化的时机是在 类加载 的时候
    //JVM 一启动,就立即加载(暂时认为)
    //每个类的类对象在JVM中只有一个,里面的 静态成员 就只有一份

    public static Singleton getInstance(){
        //后续需要使用这个类的实例,就可以用这个方法来获取 new 好的这个,而不是重新 new
        return instance;
    }

    private Singleton(){
        //需要禁止外部代码来创建这个类的实例
        //类之外的代码,尝试 new 的时候,势必会调用构造方法
        //由于构造方法是 私有的,无法调用,此时就会编译出错
    }
}
public class Demo1 {
    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();//获取静态成员
        Singleton s2 = Singleton.getInstance();//此时的实例都是同一个对象
        System.out.println(s1==s2);//结果为: true

        //Singleton s3 = new Singleton();//报错
    }
}
